import math

D = 3  # Диаметр отсека в м
L = 1.3  # Длина отсека в м
N = 4000 * 1000  # Сжимающая сила в Н
M = 700 * 1000  # Крутящий момент в Н*м
E = 72000 * 10**6  # Модуль Юнга материала в Па
RO = 2700  # плотность материала, кг/м3
SIGMA_T = 280 * 10**6  # предел текучести, Па
SIGMA_V = 400 * 10**6  # предел прочности, Па
f = 1.1  # коэффициент безопасности

Ne_f = math.ceil(N + 2 * M / (D / 2))  # Эквивалентная нагрузка, Н
Nr_f = f * Ne_f  # Расчётная нагрузка, Н

var_sig_f = 0.9

sigma_f = SIGMA_T * var_sig_f  # разрушающее напряжение для стержня фермы, Па
# print("Введите количество стержней: ")
n_ster = 44  # выбирается от лампочки
n_y = n_ster / 2  # количество узлов
Ny_f = Nr_f / n_y  # нагрузка, действующая на один узел, Н

Lc = math.sqrt(
    L**2 + 2 * (D / 2) ** 2 * (1 - math.cos(math.pi / n_y))
)  # длина трубы, м
Nc_f = Ny_f / 2 * Lc / L  # нагрузка на одну трубу, м

F_f = Nc_f / sigma_f  # потребная площадь трубы, м2

# print("Потребная площадь трубы составляет ", F_f, "м2")
# print("Введите размеры трубы по ГОСТ - диаметр и толщину в м: ")
Dc = 63 / 1000  # диаметр в м
delta_f = 2.5 / 1000  # толщина в м
F_tube = math.pi * Dc * delta_f  # площадь стандартной трубы, м2

# print("Фактическая площадь трубы", FF, "м2")
sigma_d_f = (
    Nc_f / F_tube
)  # действующее напряжение в трубе, Па                            ВЫВОД
# проверка на местную устойчивость
sigma_kr_mestn_f = (
    0.15 * E * 2 * delta_f / Dc
)  # наприяжение потери общей устойчивости, Па - оно просто есть, хз зачем
# коробление допускается
J_f = math.pi * Dc**3 / 8 * delta_f  # момент инерции сесечния трубы, м4
lyambda_f = L * math.sqrt(F_tube / J_f)  # гибкость трубы
# проверка на общую устойчивость
sigma_ust = (
    1.25 * math.pi**2 / 2 * E * (Dc / (2 * Lc)) ** 2
)  # напряжение потери устойчивости по Эйлеру, Па
etta_f = (
    sigma_ust / sigma_d_f
)  # коэффициент запаса                                   ВЫВОД
Mass_f = round(
    F_tube * L * RO * n_ster, 3
)  #                                                                               ВЫВОД
"""
print("длина стержня", Lc)
print("потребная площадь ", F_f)
print("фактическая пл ", F_tube)
print("действующее напр", sigma_d_f)
print("sigma_kr_mestn_f", sigma_kr_mestn_f)
print("J ", J_f)
print("lamdba", lyambda_f)
print("sigma_ust", sigma_ust)
print("etta", etta_f)
print("mass", Mass)
"""
